import toFloat from './toFloat.js';

/**
 * 数字按小数点分割【同步方法】
 * @description 数字按小数点分割，常用于商品价格的整数位和小数位区别显示
 * @param {String,Number} data 要分隔的数字
 * @param {Number} decimals 要保留小数的位数，默认：0
 * @return {Object} 分隔后的数据对象，包含元素：integer-整数位数字类型，decimals-小数位数字类型，integer_str-整数位字符串型，decimals_str-小数位字符串型
 */
function numPart(data = 0, decimals = 0) {
	
	// 初始化返回数据为false
	var data_return = false;
	
	// 有data参数执行
	if (typeof(data)=="number" || typeof(data)=="string")
	{
		// 传递data参数处理，先转换成number类型
		var num_data = 0; // 待处理的数字
		if (typeof(data)=='number') { num_data = data; }
		else if (typeof(data)=='string') { num_data = parseFloat(data); }
		// 参数-“保留小数位数“ 只能是number型，防止乱传参数
		var mo_decimals = parseInt(decimals) ? parseInt(decimals) : 0;
		
		// 共有多少位长度的 小数位的数字
		var count = 0;
		// 小数点"."的位置坐标
		var pointIndex = num_data.toString().indexOf(".");
		// 计算小数的长度
		if (pointIndex >= 0) { count = num_data.toString().length - pointIndex - 1; }
		
		// 以小数点分割数字，如：100.45234
		var num_integer = parseInt(num_data); // 整数部分，如：100
		var num_decimals = num_data % 1; // 小数部分，如：0.45234
		num_decimals = toFloat(num_decimals, mo_decimals); // 小数部分，只截取要保留的位置，如：0.45
		
		// 将小数转换为字符串
		var str_arr = num_decimals.toString().split('.'); // 字符串按'.'分割为前后string型数组
		var decimals_str = str_arr[1]; // 取后面一个字符串
		if (typeof(decimals_str) != "string") { decimals_str = ''; }
		var back_str = decimals_str;
		// 小数长度不足时，补充0
		if (mo_decimals > 0 && mo_decimals > decimals_str.length) 
		{
			for (var i = 0; i < (mo_decimals - decimals_str.length); i++) { back_str += "0"; }
		}
		
		// 处理返回值
		data_return = {
			integer: num_integer, // 整数位num
			decimals: num_decimals, // 小数位num
			integer_str: num_integer.toString(), // 整数位str
			decimals_str: back_str, // 小数位str
		};
	}
	
	// 返回结果数据
	return data_return;
}

export default numPart;